iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
自我挑戰組

利用 node.js/express 架設網站系列 第 14

Day-14 Express 中的資料庫連接與 CRUD 操作

  • 分享至 

  • xImage
  •  

1.選擇適合的資料庫
2.安裝和設置資料庫
3.實現基本的 CRUD 操作

選擇適合的資料庫

在 Node.js/Express 應用中,你可以選擇使用 SQL 或 NoSQL 類型的資料庫。

  • SQL(結構化查詢語言)資料庫:如 MySQL、PostgreSQL。這類資料庫有明確的表結構和約束,適合數據規範化和關聯查詢。
  • NoSQL(非結構化資料庫):如 MongoDB。這類資料庫提供更靈活的數據結構,特別適合文檔型數據存儲。

範例:

  • 若你的應用需要複雜的數據關聯和嚴格的數據模式,選擇 PostgreSQL
  • 若你的應用數據不需要複雜的關聯並且數據結構靈活,選擇 MongoDB

安裝和設置資料庫

MongoDB
MongoDB 是一個常見的 NoSQL 文檔型資料庫。今天將以 MongoDB 和 Mongoose 來進行操作。
安裝 Mongoose:

npm install mongoose

設置 MongoDB 連接:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/mydatabase', {
    useNewUrlParser: true,
    useUnifiedTopology: true
})
.then(() => console.log('MongoDB connected'))
.catch(err => console.log(err));

建立資料模型

在 MongoDB 中,資料模型是一個用來定義數據結構的模式(Schema)。你將使用 Mongoose 來建立模型。
定義 Schema:

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
    name: String,
    email: String,
    age: Number
});

const User = mongoose.model('User', userSchema);

實現 CRUD 操作

1.創建(Create)
要將數據插入資料庫,使用 POST 請求創建新用戶:

app.post('/users', async (req, res) => {
    try {
        const user = new User({
            name: req.body.name,
            email: req.body.email,
            age: req.body.age
        });
        await user.save();
        res.status(201).json(user);
    } catch (err) {
        res.status(400).json({ error: err.message });
    }
});

2.讀取(Read)
要從資料庫中讀取數據,使用 GET 請求獲取所有用戶:

app.get('/users', async (req, res) => {
    try {
        const users = await User.find();
        res.status(200).json(users);
    } catch (err) {
        res.status(400).json({ error: err.message });
    }
});

3.更新(Update)
要更新資料庫中的現有數據,使用 PUT 請求更新用戶信息:

app.put('/users/:id', async (req, res) => {
    try {
        const user = await User.findByIdAndUpdate(req.params.id, req.body, { new: true });
        if (!user) {
            return res.status(404).json({ error: 'User not found' });
        }
        res.status(200).json(user);
    } catch (err) {
        res.status(400).json({ error: err.message });
    }
});

4.刪除(Delete)
要刪除資料庫中的數據,使用 DELETE 請求刪除用戶:

app.delete('/users/:id', async (req, res) => {
    try {
        const user = await User.findByIdAndDelete(req.params.id);
        if (!user) {
            return res.status(404).json({ error: 'User not found' });
        }
        res.status(200).json({ message: 'User deleted' });
    } catch (err) {
        res.status(400).json({ error: err.message });
    }
});

測試與優化

完成 CRUD API 後,可以使用 Postman 或 CURL 來測試每個 API 的功能。此外,確保處理錯誤情況,如用戶不存在時的錯誤提示等。


上一篇
Day-13 模版引擎與視圖渲染
下一篇
Day-15 部署 Node.js 和 Express 應用到伺服器
系列文
利用 node.js/express 架設網站26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言